package pe.com.bn.sach.service.impl;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;

import org.apache.log4j.Logger;



import pe.bn.WSServiceHost.serHost.model.BodyConsultaCheque;
import pe.bn.WSServiceHost.serHost.model.BodyConsultaDesembolso;
import pe.bn.WSServiceHost.serHost.model.HeadRequest;
import pe.bn.WSServiceHost.serHost.model.HeadRespose;
import pe.bn.WSServiceHost.serHost.model.WSConsultaCheque;
import pe.bn.WSServiceHost.serHost.model.WSConsultaDesembolso;
import pe.bn.WSServiceHost.serHost.model.BodyConsultaCheque.ChequeGerencia;
import pe.bn.WSServiceHost.serHost.model.BodyConsultaCheque.LCheque;
import pe.com.bn.sach.seguridad.DatosSesion;
import pe.com.bn.sach.service.DesembolsoService;
import pe.com.bn.sach.service.ExpIngresosService;
import pe.com.bn.sach.service.MinutaService;
import pe.com.bn.sach.common.Util;
import pe.com.bn.sach.domain.Bnchf13Expediente;
import pe.com.bn.sach.domain.Bnchf15ArchivoFisico;
import pe.com.bn.sach.domain.Bnchf26Bloqueo;
import pe.com.bn.sach.domain.Bnchf26Minuta;
import pe.com.bn.sach.domain.Bnchf33ExpedientePagare;
import pe.com.bn.sach.domain.Bnchf33PrestamoExpediente;
import pe.com.bn.sach.domain.Bnchf35Inmueble;
import pe.com.bn.sach.domain.Bnchf36ExpVendedor;
import pe.com.bn.sach.domain.Bnchf39Notaria;
import pe.com.bn.sach.domain.Bnchf64Pagare;
import pe.com.bn.sach.domain.Desembolso;

import pe.com.bn.sach.domain.Bnchf51BandejaTrab;
import pe.com.bn.sach.domain.reportebloqueo;


import pe.com.bn.sach.domain.Bnchf15ArchivoFisicoId;
import pe.com.bn.sach.domain.Bnchf15DocumentoTramite;
import pe.com.bn.sach.dao.BandejaDAO;
import pe.com.bn.sach.dao.MinutaDAO;
import pe.com.bn.sach.dao.ArchivoFisicoDAO;
import java.util.Map;


public class MinutaServiceImpl implements MinutaService
	{
	
	DesembolsoService desembolsoService;
	ExpIngresosService expIngresosService;
	private static Logger log = Logger.getLogger(MinutaServiceImpl.class.getName());
	
	MinutaDAO minutaDAO; 
	BandejaDAO bandejaDAO;
	ArchivoFisicoDAO archivoFisicoDAO;
	
	
	public String buscarPagaresPorDesembolsarSoloDesembolso(Map map) throws Exception{
		
		
		List lprestamo=new ArrayList();
		String idExpediente="";
		String nropagare="";
		String idCh="";
		String idAgencia="";
		
		  List expedientesList=new ArrayList();
		  expedientesList=minutaDAO.listaPagarePorDesembolsarExp();
		  Bnchf33ExpedientePagare expedientePagare=new Bnchf33ExpedientePagare();
			
		  for (int i = 0; i < expedientesList.size(); i++) {
		  	expedientePagare=(Bnchf33ExpedientePagare)expedientesList.get(i);
		  	idExpediente=expedientePagare.getId().getBnchf13Expediente().getF13IdExpediente();
		  	nropagare=expedientePagare.getBnchf64Pagare().getF64IdPagare();
		  	idCh=expedientePagare.getId().getBnchf13Expediente().getBnchf14CentroHipotecario().getF14IdHipotecario()+"";
		  	idAgencia=expedientePagare.getId().getBnchf13Expediente().getF13IdAgencia();
		  	
			 componenteNro1(idExpediente ,nropagare,map,idCh,idAgencia);
		  }


			return "ok";
	} 
	
	
	/*   (1) antes de ejecutar el reporte.
    Realizar una consulta en la tabla de pagares y ver cuales de ellos no tiene el estado actualizado.
    bnchf64_pagare  (tener en cuenta que solo se debe buscar los expedientes que se encuentran en el estado de "por-desembolsar")
    Hacer un bucle y actulizas los estados.*/

	public String buscarPagaresPorDesembolsar(Map map) throws Exception{
		
		
		List lprestamo=new ArrayList();
		String idExpediente="";
		String nropagare="";
		String idCh="";
		String idAgencia="";
		
		  List expedientesList=new ArrayList();
		  expedientesList=minutaDAO.listaPagarePorDesembolsarExp();
		  Bnchf33ExpedientePagare expedientePagare=new Bnchf33ExpedientePagare();
			
		  for (int i = 0; i < expedientesList.size(); i++) {
		  	expedientePagare=(Bnchf33ExpedientePagare)expedientesList.get(i);
		  	idExpediente=expedientePagare.getId().getBnchf13Expediente().getF13IdExpediente();
		  	nropagare=expedientePagare.getBnchf64Pagare().getF64IdPagare();
		  	idCh=expedientePagare.getId().getBnchf13Expediente().getBnchf14CentroHipotecario().getF14IdHipotecario()+"";
		  	idAgencia=expedientePagare.getId().getBnchf13Expediente().getF13IdAgencia();
		  	
			 componenteNro1(idExpediente ,nropagare,map,idCh,idAgencia);
		  }
			  Bnchf36ExpVendedor expVendedor=new Bnchf36ExpVendedor();
			  List chequesList=new ArrayList();
			  HeadRespose cab1 = new HeadRespose();
			  Util util = new Util();
			  chequesList=minutaDAO.buscarChequesNoEmitidos();
			  Desembolso desembolso = new Desembolso();
			 
			  for (int j = 0; j < chequesList.size();j++) {
			  	expVendedor=(Bnchf36ExpVendedor)chequesList.get(j);			  	 
			  	componenteNro2(
			  			expVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().getF13IdExpediente() ,
						expVendedor.getF36IdPagare(),map,
						expVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().getBnchf14CentroHipotecario().getF14IdHipotecario()+"",
						expVendedor.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().getF13IdAgencia()
						);
			  }
			 
			return "ok";
	} 
	
	
	
	public void componenteNro1(String idExpediente , String nropagare,Map map,String idCh,String idAgencia){
		
		
		/*
		map.put("codigoHost",datosSesion.getCodigoHost());
		map.put("codigoAgencia",datosSesion.getCodigoAgencia());		 
		 * */
		
	  	HeadRespose cab1 = new HeadRespose();
		try{
			
			ResourceBundle rb = ResourceBundle.getBundle("parametro");
		    String tx = rb.getString("TxSACHConsltdesemb");
		    String trm = rb.getString("TxTRAMConsltdesemb");
			HeadRequest cab = new HeadRequest(
					tx
					,map.get("codigoHost").toString()
					,idAgencia
					,idCh
					,trm
					,HeadRequest.TIPO_TRANSACCION_CH);				
			BodyConsultaDesembolso body = new BodyConsultaDesembolso();
			body.InputData(
					idExpediente
					,nropagare);
			
			WSConsultaDesembolso consultaDesembolso = new WSConsultaDesembolso(cab,body);
			BodyConsultaDesembolso body1 = new BodyConsultaDesembolso();
			consultaDesembolso.EjecutarTramaHost(cab1,body1);
			
			if(body1.getByTag("COD-DESEMBOLS") !=null)
						{
							if(body1.getByTag("COD-DESEMBOLS").length()!=0)
							{
								if(Integer.parseInt(body1.getByTag("COD-DESEMBOLS")) == 2 || Integer.parseInt(body1.getByTag("COD-DESEMBOLS")) ==3   )
								{ 
									desembolsoService.ActualizaExpPagDesembolsopaso2(body1.getByTag("NRO-EXPEDIENTE"),body1.getByTag("NRO-PAGARE"),body1.getByTag("COD-DESEMBOLS"),body1.getByTag("FCH-EJEC-DESEMBOLS"));
								}
							}
						}
			
			
		} catch(Exception e){
			e.getStackTrace();
		}		
		
		
		
	}
	
	public void componenteNro2(String idExpediente , String nropagare,Map map,String idCh,String idAgencia){
		
		Bnchf36ExpVendedor expVendedorPaso2 = new Bnchf36ExpVendedor();
		String fechaemi ="";
		
		
		
		
		Util util=new Util();
			HeadRespose cab1 = new HeadRespose();
			try{
				//Head
				ResourceBundle rb = ResourceBundle.getBundle("parametro");
			    String tx = rb.getString("TxSACHConsltCheque");
			    String trm = rb.getString("TxTRAMConsltCheque");
			    HeadRequest cab = new HeadRequest(
						tx
						,map.get("codigoHost").toString()
						,idAgencia
						,idCh
						,trm
						,HeadRequest.TIPO_TRANSACCION_CH);
				
				//Body
				BodyConsultaCheque body = new BodyConsultaCheque();	
				BodyConsultaCheque.LCheque lche = body.new LCheque();
				lche.add(body.new ChequeGerencia()); //1
				lche.add(body.new ChequeGerencia()); //2
				lche.add(body.new ChequeGerencia()); //3
				lche.add(body.new ChequeGerencia()); //4
				lche.add(body.new ChequeGerencia()); //5
				lche.add(body.new ChequeGerencia()); //6
				lche.add(body.new ChequeGerencia()); //7
				lche.add(body.new ChequeGerencia()); //8
				body.InputData(
						idExpediente
						,nropagare
						,lche);
				
				WSConsultaCheque cheger = new WSConsultaCheque(cab,body);
				BodyConsultaCheque body1 = new BodyConsultaCheque();
				cheger.EjecutarTramaHost(cab1,body1);
			
				BodyConsultaCheque.LCheque vv1 =  null;
				vv1 = body1.getLche();

				
				Desembolso desembolso=new Desembolso(); 
				for(int i=0;i<vv1.size();i++)
				{
					if(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER")!=null)
						if(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER").length()!=0)
						{
						desembolso = new Desembolso();
						desembolso.setTipoVend( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-VENDED")  );
						desembolso.setTipoDocVend( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-DOC-VENDED") );
						desembolso.setNroDocVend(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-DOC-VENDED"));
						desembolso.setNombreCheque(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NOMBRE-CHEQUE"));
						desembolso.setNroCheque(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER"));
						desembolso.setFechaChequegeneracion(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("FCH-GENER-CHEQUE"));
						desembolso.setFechaChequegemision( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("FCH-EMISION-CHEQUE") );
						desembolso.setMontoCheque(util.formatearMonto(new BigDecimal(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("MNTO-CHEQUE-GER"))));
						desembolso.setAgenciaCheque(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("AGENC-CHEQUE-GER"));
						desembolso.setEstdoCheque(  Integer.parseInt( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER").trim().length() ==0 ? "0" :  ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER"))+"" );
						desembolso.setDescDesemb(  ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("DES-STDO-CHEQUE")  );
						
						try{
					    	
					    
					    if(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER") !=null)
						{
							if(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER").length()!=0)
							{
								if(Integer.parseInt( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER") ) == 2 || Integer.parseInt(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER")) ==3   )
								{
									
									try{
									/**
									 * Obtenemos el id del Vendedor
									 */
									expVendedorPaso2 = new Bnchf36ExpVendedor();
									expVendedorPaso2.getId().getBnchf36Vendedor().setF36TpoVend( Integer.parseInt( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-VENDED").trim().length()==0 ? "0" : ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-VENDED") )+"" );
									expVendedorPaso2.getId().getBnchf36Vendedor().setF36TpoDoc(new Long( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-DOC-VENDED").trim().length()==0 ? "0" : ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-DOC-VENDED")   ));
									expVendedorPaso2.getId().getBnchf36Vendedor().setF36NumDoc( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-DOC-VENDED") );
									expVendedorPaso2.getId().getBnchf36Vendedor().setF36IdVendedor( new Long(desembolsoService.idvendedorquery(expVendedorPaso2))  );
									
									/**
									 * Mapeamos los valores una ves obtenido el id del Vendedor
									 */
									expVendedorPaso2.setF36EstdoCheq(new Long(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER") ));
									expVendedorPaso2.setF36UsrAct(new Long(map.get("codigoUsuario").toString()));
									expVendedorPaso2.setF36NroControl(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CONTROL"));
									expVendedorPaso2.setF36NroCheq(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER"));
									
									fechaemi = ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("FCH-EMISION-CHEQUE");
									fechaemi=fechaemi.substring(6,8)+"/"+fechaemi.substring(4,6)+"/"+fechaemi.substring(0,4);
									SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy"); 
									expVendedorPaso2.setF36FeEmiCheq(sdf.parse(fechaemi));
									expVendedorPaso2.setF36AgencCheq(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("AGENC-CHEQUE-GER"));
									expVendedorPaso2.setF36IdUsuaModi(map.get("codigoHost").toString());
									
									
									expVendedorPaso2.getId().getBnchf35Inmueble().getId().getBnchf13Expediente().setF13IdExpediente(idExpediente);
									
									Bnchf35Inmueble bnchf35Inmueble = new Bnchf35Inmueble(); 
									String idInmueble = expIngresosService.getidinmueble(idExpediente);
									
									expVendedorPaso2.getId().getBnchf35Inmueble().getId().setF35IdInmueble(new Long(idInmueble));

									desembolsoService.ActualizaExpVendedorDesempaso2(expVendedorPaso2);
									
									}catch(Exception e){e.printStackTrace();}
								}
							}
						}
					    }catch(Exception e){e.printStackTrace();}
					    
					    
			
				}
				}
				
				//mav.addObject("lcheques",lcheques);
				
				
			}catch(Exception e){
			log.error(e.getMessage());	
			e.printStackTrace();
			}
		
	}
	/*
	 	    <result column="f64_id_pagare" property="f64IdPagare" /> 
	    <result column="f64_id_expediente" property="bnchf13Expediente.f13IdExpediente" /> 
		<result column="f64_estdo_pagare" property="f64EstdoPagare"    />
	 * */
	
	/*
   (2) realizar una consulta y verificar ele stado de los cheques.
          bnchf36_exp_vendedor buscar los cheques que aun no han sido emitidos y realizar un bucle y llamar al COM para actualizar el estado.

	 * */

	public String buscarChequesNoEmitidos() throws Exception{
		
		
	/*	Bnchf36ExpVendedor expVendedor=new Bnchf36ExpVendedor();
		  List chequesList=new ArrayList();
		  HeadRespose cab1 = new HeadRespose();
			Util util = new Util();
		  chequesList=minutaDAO.buscarChequesNoEmitidos();
		  Desembolso desembolso = new Desembolso();
		  for (int j = 0; j < chequesList.size();j++) {
		  	expVendedor=(Bnchf36ExpVendedor)chequesList.get(j);
		  	String idExpediente="";
		  	String nropagare="";*/
		  				
		  								/*
		  								try{
										//Head
										ResourceBundle rb = ResourceBundle.getBundle("parametro");
									    String tx = rb.getString("TxSACHConsltCheque");
									    String trm = rb.getString("TxTRAMConsltCheque");
									    HeadRequest cab = new HeadRequest(
												tx
												,"USR001"
												,"0046"
												,"000001"
												,trm
												,HeadRequest.TIPO_TRANSACCION_CH);
										
										//Body
										BodyConsultaCheque body = new BodyConsultaCheque();	
										BodyConsultaCheque.LCheque lche = body.new LCheque();
										lche.add(body.new ChequeGerencia()); //1
										lche.add(body.new ChequeGerencia()); //2
										lche.add(body.new ChequeGerencia()); //3
										lche.add(body.new ChequeGerencia()); //4
										lche.add(body.new ChequeGerencia()); //5
										lche.add(body.new ChequeGerencia()); //6
										lche.add(body.new ChequeGerencia()); //7
										lche.add(body.new ChequeGerencia()); //8
										body.InputData(
												idExpediente
												,nropagare
												,lche);
										
										WSConsultaCheque cheger = new WSConsultaCheque(cab,body);
										BodyConsultaCheque body1 = new BodyConsultaCheque();
										cheger.EjecutarTramaHost(cab1,body1);
									
										BodyConsultaCheque.LCheque vv1 =  null;
										vv1 = body1.getLche();
						
										Bnchf36ExpVendedor expVendedorPaso2 = new Bnchf36ExpVendedor();
										String fechaemi ="";
										
										for(int i=0;i<vv1.size();i++)
										{
											if(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER")!=null)
												if(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER").length()!=0)
												{
											desembolso = new Desembolso();
											desembolso.setTipoVend( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-VENDED")  );
											desembolso.setTipoDocVend( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("TIP-DOC-VENDED") );
											desembolso.setNroDocVend(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-DOC-VENDED"));
											desembolso.setNombreCheque(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NOMBRE-CHEQUE"));
											desembolso.setNroCheque(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("NRO-CHEQUE-GER"));
											desembolso.setFechaChequegeneracion(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("FCH-GENER-CHEQUE"));
											desembolso.setFechaChequegemision( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("FCH-EMISION-CHEQUE") );
											desembolso.setMontoCheque(util.formatearMonto(new BigDecimal(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("MNTO-CHEQUE-GER"))));
											desembolso.setAgenciaCheque(((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("AGENC-CHEQUE-GER"));
											desembolso.setEstdoCheque(  Integer.parseInt( ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER").trim().length() ==0 ? "0" :  ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("STDO-CHEQUE-GER"))+"" );
											desembolso.setDescDesemb(  ((BodyConsultaCheque.Cheque)vv1.get(i)).getByTag("DES-STDO-CHEQUE")  );
										   // lcheques.add(desembolso);
										}
										}
										
										//mav.addObject("lcheques",lcheques);
										
										
									}catch(Exception e){
									log.error(e.getMessage());	
									}*/
									
		//  }
		  
	/*
	 		<result column="f36_id_expediente" property="id.bnchf35Inmueble.id.bnchf13Expediente.f13IdExpediente/>
		<result column="f36_id_inmueble" property="id.bnchf35Inmueble.id.f35IdInmueble" />
		<result column="f36_id_vendedor" property="id.bnchf36Vendedor.f36IdVendedor" />
		<result column="f36_nro_cheq" property="f36NroCheq" />
		<result column="f36_estdo_cheq" property="f36EstdoCheq" />
	 * */	  
		  return "ok";
	}
	
	
	public void newIdPagoMinta(String idPago,String idMinuta) throws Exception
	{
		minutaDAO.newIdPagoMinta(idPago,idMinuta);
	}
	public void guardarPagoServicioHost(String idPago,String idExpediente,String idTramite,
			String idAgente,String montoPago,String f33UsrReg,String f33UsrCre) throws Exception
	{
		minutaDAO.guardarPagoServicioHost(idPago,idExpediente,idTramite,idAgente,montoPago,f33UsrReg,f33UsrCre);
	}
	public void bajaPendientePago(String idExpediente,String idPago) throws Exception
	{
		minutaDAO.bajaPendientePago(idExpediente,idPago);
	}
	public String MontoPagoServicio(String idPago) throws Exception
	{
		return minutaDAO.MontoPagoServicio(idPago);
	}
	public Long MaxIdPagosequence() throws Exception
	{
		return minutaDAO.MaxIdPagosequence();
	}
	public List reporte1(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte1(reportebloqueo);
	}
	
	
	public Bnchf39Notaria getNotaria(Bnchf39Notaria bnchf39Notaria)  throws Exception
	{
		return minutaDAO.getNotaria(bnchf39Notaria);
	}
	
	public List reporte2(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte2(reportebloqueo);
	}
	
	public List reporte3(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte3(reportebloqueo);
	}
	
	public List reporte3barras(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte3barras(reportebloqueo);
	}
	
	public List reporte2_4(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte2_4(reportebloqueo);
	}
	
	public List reporte2_5(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte2_5(reportebloqueo);
	}
	
	
	
	public List reporte3linea(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte3linea(reportebloqueo);
	}
	 
	
	public List reporte3detallado(reportebloqueo reportebloqueo) throws Exception
	{
		return minutaDAO.reporte3detallado(reportebloqueo);
	}
	
	
	public void ActualizaBloqueo(Bnchf26Bloqueo bnchf26Bloqueo) throws Exception
	{
		
		minutaDAO.ActualizaBajaBloqueo(bnchf26Bloqueo);

	}
	
	public List cargaMinuta(String idExpediente) throws Exception
	{
		
		
		
		int idmovimiento = 0;
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();

		/*******************
		      Paso 01
		      QUERY BANDEJA DE TRABAJO
		******************/
		
			bnchf13Expediente.setF13IdExpediente(idExpediente);
		Bnchf51BandejaTrab bnchf51BanejaTrab = new Bnchf51BandejaTrab();
			bnchf51BanejaTrab.setBnchf13Expediente(bnchf13Expediente);
		bnchf51BanejaTrab = bandejaDAO.IDMOVTO(bnchf51BanejaTrab);
		bnchf51BanejaTrab.getBnchf13Expediente().getBnchf35Inmueble().getId().setBnchf13Expediente(bnchf51BanejaTrab.getBnchf13Expediente());
		Bnchf26Minuta bnchf26Minuta = new Bnchf26Minuta();
		bnchf26Minuta.setBnchf35Inmueble(bnchf51BanejaTrab.getBnchf13Expediente().getBnchf35Inmueble());
		
		return minutaDAO.listaMinuta(bnchf26Minuta);
	}
	
	public List lstBloqueovencidosexcel(reportebloqueo reportebloqueo)throws Exception
	{
		
		Bnchf26Bloqueo mybnchf26Bloqueo = new Bnchf26Bloqueo();
		List l = new ArrayList();
		List lreporte = new ArrayList();
		l = minutaDAO.lstBloqueovencidos(reportebloqueo);
		
		
		
		
		
		if(l.size()>0)
		for(int i=0;i<l.size();i++)
		{
			
			
			mybnchf26Bloqueo = new Bnchf26Bloqueo();
			mybnchf26Bloqueo = (Bnchf26Bloqueo)l.get(i);
			mybnchf26Bloqueo.setDescripcion(mybnchf26Bloqueo.getDescripcion()+":"+mybnchf26Bloqueo.getCounts());
			
		
			
			lreporte.add(mybnchf26Bloqueo);
		}
		
		l = minutaDAO.lstBloqueonovencidos(reportebloqueo);
		
		if(l.size()>0)
		for(int i=0;i<l.size();i++)
		{
			mybnchf26Bloqueo = new Bnchf26Bloqueo();
			mybnchf26Bloqueo = (Bnchf26Bloqueo)l.get(i);
			
			mybnchf26Bloqueo.setDescripcion(mybnchf26Bloqueo.getDescripcion()+":"+mybnchf26Bloqueo.getCounts());
			lreporte.add(mybnchf26Bloqueo);
		}
		
		return lreporte;
	
	}
	

	
	public List lstBloqueo(String idExpediente,Bnchf26Bloqueo bnchf26Bloqueo ) throws Exception
	{
		
		
		
		int idmovimiento = 0;
		Bnchf13Expediente bnchf13Expediente = new Bnchf13Expediente();

		/*******************
		      Paso 01
		      QUERY BANDEJA DE TRABAJO
		******************/
		
			bnchf13Expediente.setF13IdExpediente(idExpediente);
		Bnchf51BandejaTrab bnchf51BanejaTrab = new Bnchf51BandejaTrab();
			bnchf51BanejaTrab.setBnchf13Expediente(bnchf13Expediente);
		bnchf51BanejaTrab = bandejaDAO.IDMOVTO(bnchf51BanejaTrab);

		
		bnchf51BanejaTrab.getBnchf13Expediente().getBnchf35Inmueble().getId().setBnchf13Expediente(bnchf51BanejaTrab.getBnchf13Expediente());
		bnchf26Bloqueo.setBnchf35Inmueble(bnchf51BanejaTrab.getBnchf13Expediente().getBnchf35Inmueble());
		return minutaDAO.lstBloqueo(bnchf26Bloqueo);
	}
	
	
	public List lstDocumento(String idDocumento) throws Exception
	{
		
		Bnchf15ArchivoFisico bnchf15ArchivoFisico = new Bnchf15ArchivoFisico();
		Bnchf15ArchivoFisicoId bnchf15ArchivoFisicoId = new Bnchf15ArchivoFisicoId();
		Bnchf15DocumentoTramite bnchf15DocumentoTramite = new Bnchf15DocumentoTramite();
		
			bnchf15DocumentoTramite.setF15IdDocumento(new Long(idDocumento));
		bnchf15ArchivoFisicoId.setBnchf15DocumentoTramite(bnchf15DocumentoTramite);
		bnchf15ArchivoFisico.setId(bnchf15ArchivoFisicoId);
			
		return archivoFisicoDAO.listaArchivoFisico(bnchf15ArchivoFisico);
	}
	
	public void ActualizaMinuta(Bnchf26Minuta bnchf26Minuta,Bnchf26Bloqueo bnchf26Bloqueo,DatosSesion datosSesion) throws Exception
	{
		
		bnchf26Minuta.setF26UsrAct(new Long(datosSesion.getCodigoUsuario()));
		bnchf26Bloqueo.setF26UsrAct(new Long(datosSesion.getCodigoUsuario()));
		bnchf26Bloqueo.setF26IdUsuaCrea(datosSesion.getCodigoUsuario());
		bnchf26Bloqueo.setF26UsrReg(new Long(datosSesion.getCodigoUsuario()));
		
		minutaDAO.ActualizaMinuta(bnchf26Minuta);
		bnchf26Bloqueo.setF26Vigencia("1");
		if(bnchf26Bloqueo.getF26IdBloqueo()==null)
		minutaDAO.GuardaBloqueo(bnchf26Bloqueo);
		else
		minutaDAO.ActualizaBloqueo(bnchf26Bloqueo);
		
		
		
	}
	
	public void NuevoPopupBloqueo(Bnchf26Bloqueo bnchf26Bloqueo,DatosSesion datosSesion) throws Exception
	{
		bnchf26Bloqueo.setF26Vigencia("2");
		minutaDAO.ActualizaBajaBloqueo(bnchf26Bloqueo);
		bnchf26Bloqueo.setF26Vigencia("1");
		bnchf26Bloqueo.setF26UsrAct(new Long(datosSesion.getCodigoUsuario()));
		bnchf26Bloqueo.setF26IdUsuaCrea(datosSesion.getCodigoUsuario());
		bnchf26Bloqueo.setF26UsrReg(new Long(datosSesion.getCodigoUsuario()));
		minutaDAO.GuardaBloqueo(bnchf26Bloqueo);
		
	}
	
	
	
	public void setArchivoFisicoDAO(ArchivoFisicoDAO archivoFisicoDAO) {
		this.archivoFisicoDAO = archivoFisicoDAO;
	}
	public void setBandejaDAO(BandejaDAO bandejaDAO) {
		this.bandejaDAO = bandejaDAO;
	}
	public void setMinutaDAO(MinutaDAO minutaDAO) {
		this.minutaDAO = minutaDAO;
	}
	
	
	/**
	 * @param desembolsoService El desembolsoService a establecer.
	 */
	public void setDesembolsoService(DesembolsoService desembolsoService) {
		this.desembolsoService = desembolsoService;
	}
	
	
	
	/**
	 * @param expIngresosService El expIngresosService a establecer.
	 */
	public void setExpIngresosService(ExpIngresosService expIngresosService) {
		this.expIngresosService = expIngresosService;
	}
}


